/**
 * Project Name:dyrj-core
 * File Name:MeatballInterceptor.java
 * Package Name:com.dyrj.Interceptor
 * Date:2018年3月5日上午10:16:05
 * Copyright (c) 2018, zhang.xiangyu@foxmail.com All Rights Reserved.
*/
package com.dyrj.Interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dyrj.component.SpringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.dyrj.component.TokenComponent;

/**   
 * @Title: MeatballInterceptor.java 
 * @Package com.dyrj.Interceptor
 * @Description: TODO(权限验证拦截器)
 * @author
 * @date 2018年3月5日 上午10:16:05 
 * @version V1.0   
 */
public class MeatballApiInterceptor implements HandlerInterceptor {
    // 实例化bean
    private TokenComponent tokenComponent;
//    private Object o;
    MeatballApiInterceptor() {
        this.tokenComponent = SpringUtil.getBean(TokenComponent.class);
//        this.o = SpringUtil.getBean("loginApiService");
    }
	/**
	 * 在请求处理之前进行调用（Controller方法调用之前）
	 * 只有返回true才会继续向下执行，返回false取消当前请求
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//		Object o = SpringUtil.getBean("loginApiService");
//		Method m1 = o.getClass().getDeclaredMethod("getWeixinUserResult", String.class);
//		boolean a = (boolean)m1.invoke(o.getClass().newInstance(), "1111");

//		String remote = request.getRemoteHost();
//		// 验证token是否合法
//		String access_token = request.getParameter("access_token");
//		// 如果token为空，则从body中获取数据
//		if(StringUtils.isEmpty(access_token)) {
//			// 获取url中token
//			access_token = request.getHeader("access_token");
//		}
//		// 验证token是否合法
//		tokenComponent.parseJWT(access_token, remote);
		return true;
	}

	/**
	 * 请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）
	 */
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
	}

	/**
	 * 在整个请求结束之后被调用，也就是在DispatcherServlet 渲染了对应的视图之后执行（主要是用于进行资源清理工作）
	 */
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}

}
